#ifndef NANE_SCRIPTSYSTEMIMPL__H
#   define NANE_SCRIPTSYSTEMIMPL__H

#   include "nane/ScriptSystem/ScriptSystem.h"
#   include "nane/ScriptSystem/ScriptModule.h"
#   include <string>
#   include <vector>

namespace nane
{
    class ScriptSystem::Implementation
        : public SubSystem<IScriptSystem>::Implementation
    {
    public:
        Implementation();
        ~Implementation();

    public:
        void Release( ScriptModule::Implementation* _scriptModuleImpl );

    public:
        static void nane_log_impl( const char* _message );
        
    public:
        struct ExportedFunction
        {
            std::string className;
            std::string functionName;
            ScriptFunctionBase* function;
            
            ExportedFunction( const char* _className, const char* _functionName, ScriptFunctionBase* _function )
                : className( _className )
                , functionName( _functionName )
                , function( _function )
            {
            }
        };
        
        std::vector<ExportedFunction> globalFunctions;
    };
}   // namespace nane

#endif	// NANE_SCRIPTSYSTEMIMPL__H
